/* exercice 2 */ /* question 1: le predicat auxiliaire inf(+K,-R) renvoie les entiers compris entre 1 et K */ inf(K,R):-K>0, (R is K; (P is K-1,inf(P,R))). gen(0,_,[]). gen(N,K,[R|L]):-N>0, inf(K,R), P is N-1, gen(P,K,L). /* question 2*/ sorted([]). sorted([_]). sorted([X,Y|L]):- X=0, between(P,K,X), Q is N-1,aux(Q,K,L,X). /* exercice 3 */ /* question 1: la position est perdante. */ /* question 2: on represente une position par la liste des indices de ses pieces. Ainsi la position du premier exemple est representee par [3,7,10] et celle de la question 1. par [3,4] */ move(L,M):-aux1(1,L,M). aux1(I,[J|L],[K|L]):-aux2(I,J,K). aux1(_,[J|L],[J|M]):-S is J+1, aux1(S,L,M). aux2(I,J,I):-I